Databases often contain vitally important records for a company. These records can include human resource, corporate, financial, legal, medical, and other records. However, databases typically have records that, when changed, are updated in a simple way that destroys the previous state that existed before the change. In some cases, a log of changes is recorded to preserve changed data between times when a full backup of the database was performed. However, in order to reconstruct the state of a record or the state of the database at a given time, all of the logged changes need to be replayed from a prior known backed up state to the time of interest. This is a prohibitively time consuming process especially if the state of only a few records is desired at a previous time is desired to be known. In some other cases, all the database changes are logged in the database by duplicating the database row entry every time there is a change to a data field in the row. This allows rapid searching and easy access for the status of a record at a given time. However, for every small change in any field, the data for the entire row is replicated leading to a very inefficient use of storage space. It would be beneficial to have a rapidly searchable and easily accessible record state for any given time without losing storage efficiency.